package com.qyer.lxp.lxdao.order;

import com.qyer.lxp.model.availability.normal.Available;
import com.qyer.lxp.model.availability.parameter.AvailabilityRequest;
import com.qyer.lxp.model.book.normal.Book;
import com.qyer.lxp.model.book.parameter.BookRequest;
import com.qyer.lxp.model.booklimits.normal.BookLimit;
import com.qyer.lxp.model.booklimits.parameter.BookLimitRequest;
import com.qyer.lxp.model.orderstatus.normal.OrderStatus;
import com.qyer.lxp.model.orderstatus.parameter.OrderStatusRequest;

import java.util.List;

/**
 *
 * 预订供应类
 * Created by jiangping on 16/5/13.
 */
public interface IBookProvideDao {

    /**
     * 验价接口
     * 功能说明：传入购买的销售项目code，以及购买的规格或附加选项的code和数量，
     * 获取相应的可售信息和最新的准确价格信息
     * @param availabilityRequest   需要验价参数的封装对象
     * @return  返回验价结果
     * @throws Exception
     */
    public Available getAvailablity(AvailabilityRequest availabilityRequest) throws Exception;

    /**
     * 预定限制接口
     * @param bookLimitRequest
     * @return
     * @throws Exception
     */
    public List<BookLimit> getBookLimits(BookLimitRequest bookLimitRequest) throws Exception;

    /**
     * 获取订单状态
     * @param orderStatusRequest
     * @return
     * @throws Exception
     */
    public List<OrderStatus> getOrderStatus(OrderStatusRequest orderStatusRequest) throws Exception;

    /**
     * 调用力行预订接口,预订产品生成订单
     * @param bookRequest   预订请求参数
     * @return  返回生成的订单信息
     * @throws Exception
     */
    public Book getBook(BookRequest bookRequest) throws Exception;
}
